iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0

終於完賽了!努力好久終於到今天了,終於不用每天晚上趕在 12 點前生出文章了~
/images/emoticon/emoticon02.gif

回顧

在這三十天,我們在最一開始的基礎中,介紹了 API 的路由和管理:
[Day 03] 路由設定
[Day 04] 路由設計:RESTful API
[Day 06] API 管理與 API 文件
[Day 07] API 文件進階設定
[Day 08] API 的 Response
[Day 09] 做出一個網站:Jinja Template

中間還穿插了一個工具介紹:
[Day 05] 後端開發的得力助手:Postman

接著討論到稍微進階一點的環境變數與 Middleware:
[Day 10] 環境變數
[Day 11] Middleware 與 CORS

接下來就是比較偏應用的部分,包含登入驗證、資料庫、日誌系統:
[Day 12] 登入驗證 (一):Basic Auth
[Day 13] 登入驗證 (二):JWT
[Day 14] 資料庫 (一):ORM 與 SQLAlchemy
[Day 15] 資料庫 (二):Schema 與 資料庫連線
[Day 16] 資料庫 (三):增刪查改 CRUD
[Day 17] 資料庫 (四):用 Alembic 做資料庫初始化與 Migration
[Day 20] 日誌系統 (一):Logging
[Day 21] 日誌系統 (二):操作預設的 Uvicorn logger
[Day 22] 日誌系統 (三):Loguru
[Day 23] 日誌系統 (四):在 Middleware 紀錄 Log 吧
[Day 24] 日誌系統 (五):用 traceback 取得更完整訊息

其中,在介紹日誌系統前,還介紹了比較偏向系統設計面的議題:
[Day 18] 錯誤處理 (一):HTTPException
[Day 19] 錯誤處理 (二):流程優化 與 客製化 HTTPException

最後,則是測試與部屬:
[Day 25] 好用的測試模組:Pytest
[Day 26] 把 FastAPI 部屬在 render

在最後面的幾天,則是介紹了一些相對沒那麼重要的小主題:
[Day 27] 背景任務 Background Task
[Day 28] WebSocket 的實作與測試
[Day 29] 定時任務與健康狀態檢查

這些文章我盡可能地涵蓋了我在公司所學到和使用到的功能,以及實務上遇到的問題與解決之法,但還是有些遺珠之憾,像是

  1. API versioning
    除了內文中介紹的做法之外,其實還有其他方法
  2. Annotated
    一個後來才出現的語法
  3. 不依靠 models 建立表格
    如果表格的名稱和數量是浮動的,就沒辦法先用 models 定義,就需要用其他方法建立表格
  4. 打包
    如果需要部屬程式到客戶的伺服器中,但又不希望對方取得原始碼,可以考慮將 python 打包成 exe 執行檔
  5. Log server
    除了在本地紀錄 log,我們也會希望另一個地方有 log server,一方面可以當備份,二方面在查詢 log 內容時可以使用 elastic search 之類的工具提高效率
  6. worker、threading、multiprocessing
    若要提高效能,就需要研究好上面這些東西 XD

上面這些有些是因為不知道該放哪裡比較好,有些則是時間不太夠,沒辦法完整的介紹,未來有緣我再另外找地方寫文章分享 XD

完賽心得

回過頭來看這三十天,我覺得算是一個不錯的體驗 (這是第一次參加),在這三十天每天都在嘗試將自己會的東西已大家都看得懂的方式記錄下來。為了讓大家看得懂,還需要去思考整個文章的脈絡,以及各個文章主題的先後順序,這比起單純的技術筆記還要難。

雖然收穫很多,但也還有許多地方我覺得可以改進 (如果還有下次的話 XD)

語句的通順度

這是我覺得比較嚴重的問題。由於我的文章內容比較口語化 (想到什麼就寫什麼),因此容易有冗言贅字,沒辦法做到文字上的精練。此外,有時候我會來回修改、調換語句順序,導致有些內容被我用不同的方式講了兩遍,但偏偏當下就是完全檢查不出來,並且同時還有趕在 12 點前發文的壓力,最終就導致我的文章有些地方就沒那麼通順。

屯文章

我知道有很多人都會趁有空先把文章寫起來,避免臨時有事來不及寫而導致挑戰失敗 (但感覺這樣做有點違背鐵人賽的用意就是了 XD)。我曾經想這麼做,但是一直做不到。只要有時間,我就會想先把接下來要發的文章寫的更完整,或是來回檢查是否有語句不通順的問題,在沒有正式發表文章或讓前一篇文章完美之前都沒有動力去寫下一篇。我的理想狀況是可以屯半篇到一篇 (屯更多篇對目前的我來說有點不切實際 XD),讓我可以不用那麼有壓力地每天晚上趕文章,同時也有更大的機會找到自己的盲點。

內容的有趣程度

一開始為了讓文章不要那麼無聊,我都會盡量找一些迷因、梗圖來放,但後面的文章實在沒時間繼續做這件事了,有點可惜 QQ

範例程式碼管理

原本有想要把所有範例程式碼都放上 Github 或是 Gist,但有些範例我會來回改動,或是有多個不同版本的作法,導致我覺得要上傳有點麻煩,索性就放棄這件事了 (最後還是有 push 上去,但是就有點亂,不太適合分享)

最後再稍微 murmur 一下,當初選這個主題是想說好像這幾年都沒看到有人寫,再加上在公司用了一段時間,算是小有心得,感覺有足夠多的內容可以分享,殊不知,開賽之後發現有好幾篇都在寫 FastAPI ...

但反過來想想,看看大家都怎麼用 FastAPI 好像也不錯,畢竟大家各有各自習慣的做法,說不定之後工作上也可以用到這些不同的做法。

耶,今天可以早點睡了 ~
/images/emoticon/emoticon11.gif


上一篇
[Day 29] 定時任務與健康狀態檢查
系列文
FastAPI 開發筆記:從新手到專家的成長之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言